﻿/*
 * Script: "geolocalizacion_consultar_incidencia.js"
 * Copyright 2011 SISVOX.
 *
 * Licenciado bajo SISVOX, Version 1.0 (la "Licencia");
 * El codigo presente que compone este Software es propiedad unica y
 * exclusivamente de SISVOX, por lo tanto, usted no podrá utilizar este
 * archivo excepto en cumplimiento de la Licencia ofrecida por SISVOX.
 * Usted puede obtener una copia de la Licencia en:
 *
 *      Soluciones Integrales de Software Vox (SISVOX)
 *                 http://www.sisvox.com
 *
 *     - Carlos Calvo      <ccalvo@sisvox.com>
 *     - Andres Hernandez  <ahernandez@sisvox.com>
 *
 * A menos que sea requerido por la ley aplicable o se acuerde por escrito,
 * el software distribuido bajo la licencia se distribuye "TAL CUAL", CON
 * LAS GARANTIAS Y CONDICIONES expresadas en la "Licencia".
 */
 
 
// Inicialización de Variables

var map				= null;
var markers			= null;
var infoBubbleTurno = null;
var markerClusterer = null;
var ClustereOnOff	= "on";
var ancho_peq 		= 0;
var alto_peq 		= 0;
var ancho_med 		= 0;
var alto_med 		= 0;

// Variables donde se guardan los datos de las Señales a mostrar
var id_municipio_base 		= null;
var lista_id_incidencia 	= null;
var lista_coord_x 			= null;
var lista_coord_y 			= null;
var lista_id_tipo_inc 		= null;
var lista_fecha_ocurrencia 	= null;
var lista_id_status_inc 	= null;
var lista_observaciones 	= null;
var lista_ruta_img1 		= null;

var lista_tipo_inc_id 		= null;
var lista_tipo_inc_nombre 	= null;
var nombre_tipo_inc 		= new Array();

// Dimension de las Imagenes de las Señales
var lista_img_id 			= null;
var lista_img_ancho_peq 	= null;
var lista_img_alto_peq 		= null;
var lista_img_ancho_med 	= null;
var lista_img_alto_med 		= null;
var img_dimension_ancho_peq = new Array();
var img_dimension_alto_peq 	= new Array();
var img_dimension_ancho_med = new Array();
var img_dimension_alto_med 	= new Array();
		

// =================================================================================================================
// ============================== MAPA DE GEOLOCALIZACION - CONSULTAR INCIDENCIA ===================================
// =================================================================================================================

function geolocalizacion_consultar_incidencia( overviewMap ) {
	
	// Inicializamos los Datos de los Resultados a mostrar
	inicializar_datos();
	
	// Creamos el Mapa
	var centerPoint = new google.maps.LatLng( parseFloat(mapa_coord_x).toFixed(8), parseFloat(mapa_coord_y).toFixed(8) );
	var myOptions = {
		zoom: parseInt(mapa_zoom),
		zoomControlOptions: {
      		style: google.maps.ZoomControlStyle.LARGE
    	},
		center: centerPoint,
		panControl: true,
		mapTypeControl: false,
		scaleControl: true,
		streetViewControl: false,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		overviewMapControl: overviewMap,
		overviewMapControlOptions: {
    		opened: overviewMap
  		}
	}
	map = new google.maps.Map(document.getElementById("map"), myOptions);
	
	// Inicializamos y Seteamos las Variables de los Marcadores
	pintar_resultados();
	
	// Agregamos Cluster al Mapa
	agregar_markerClusterer();
}


// =================================================================================================================
// ========================================= INICALIZAR LOS DATOS DEL MAPA =========================================
// =================================================================================================================

function inicializar_datos() {
	id_municipio_base			= document.getElementById("h_id_municipio_base").value
	
	var coord_x 				= document.getElementById("h_coord_x").value;
	var coord_y 				= document.getElementById("h_coord_y").value;
	var zoom 					= document.getElementById("h_zoom").value;
	
	var h_ls_id_incidencia 		= document.getElementById("h_ls_id_incidencia").value;
	lista_id_incidencia 		= h_ls_id_incidencia.split( "/*" );
	
	var h_ls_coord_x 			= document.getElementById("h_ls_coord_x").value;
	lista_coord_x 				= h_ls_coord_x.split( "/*" );
	
	var h_ls_coord_y 			= document.getElementById("h_ls_coord_y").value;
	lista_coord_y 				= h_ls_coord_y.split( "/*" );
	
	var h_ls_id_tipo_inc 		= document.getElementById("h_ls_id_tipo_inc").value;
	lista_id_tipo_inc 			= h_ls_id_tipo_inc.split( "/*" );
	
	var h_ls_fecha_ocu 			= document.getElementById("h_ls_fecha_ocu").value;
	lista_fecha_ocurrencia 		= h_ls_fecha_ocu.split( "/*" );
	
	var h_ls_id_status_inc 		= document.getElementById("h_ls_id_status_inc").value;
	lista_id_status_inc 		= h_ls_id_status_inc.split( "/*" );
	
	var h_ls_observaciones 		= document.getElementById("h_ls_observaciones").value;
	lista_observaciones			= h_ls_observaciones.split( "/*" );
	
	var h_ls_ruta_img1 			= document.getElementById("h_ls_ruta_img1").value;
	lista_ruta_img1 			= h_ls_ruta_img1.split( "/*" );
	
	
	var h_ls_tipo_inc_id 		= document.getElementById("h_ls_tipo_inc_id").value;
	lista_tipo_inc_id 			= h_ls_tipo_inc_id.split( "/*" );
	
	var h_ls_tipo_inc_nombre 	= document.getElementById("h_ls_tipo_inc_nombre").value;
	lista_tipo_inc_nombre 		= h_ls_tipo_inc_nombre.split( "/*" );
	
	nombre_tipo_inc = new Array();
	for ( i = 0; i < lista_tipo_inc_id.length - 1; i++ ) {
		nombre_tipo_inc[lista_tipo_inc_id[i]] 	= lista_tipo_inc_nombre[i];
	}
	
	
	// Dimension de las Imagenes
	
	var h_ls_img_id 			= document.getElementById("h_ls_img_id").value;
	lista_img_id 				= h_ls_img_id.split( "/*" );
	
	var h_ls_img_ancho_peq 		= document.getElementById("h_ls_img_ancho_peq").value;
	lista_img_ancho_peq 		= h_ls_img_ancho_peq.split( "/*" );
	
	var h_ls_img_alto_peq 		= document.getElementById("h_ls_img_alto_peq").value;
	lista_img_alto_peq 			= h_ls_img_alto_peq.split( "/*" );
	
	var h_ls_img_ancho_med 		= document.getElementById("h_ls_img_ancho_med").value;
	lista_img_ancho_med 		= h_ls_img_ancho_med.split( "/*" );
	
	var h_ls_img_alto_med 		= document.getElementById("h_ls_img_alto_med").value;
	lista_img_alto_med			= h_ls_img_alto_med.split( "/*" );
	
	img_dimension_ancho_peq 	= new Array();
	img_dimension_alto_peq 		= new Array();
	img_dimension_ancho_med 	= new Array();
	img_dimension_alto_med 		= new Array();
	for ( i = 0; i < lista_img_id.length - 1; i++ ) {
		img_dimension_ancho_peq[lista_img_id[i]] 	= lista_img_ancho_peq[i];
		img_dimension_alto_peq[lista_img_id[i]] 	= lista_img_alto_peq[i];
		img_dimension_ancho_med[lista_img_id[i]] 	= lista_img_ancho_med[i];
		img_dimension_alto_med[lista_img_id[i]] 	= lista_img_alto_med[i];
	}
}
		

// =================================================================================================================
// ====================================== PINTA LOS RESULTADOS EN EL MAPA ==========================================
// =================================================================================================================

function pintar_resultados() {
	var infowindow_div_incidencia 		= document.getElementById('infowindow_div_incidencia').innerHTML;
	var infowindow_div_imagen 			= document.getElementById('infowindow_div_imagen').innerHTML;
	
	// Arreglo donde se dejan los Marcadores para ser pasados a la Funcion de Cluster
	markers = [];
	
	for ( var j = 0; j < lista_id_incidencia.length-1; j++ ) {
		// Obtenemos los atributos de cada Marcador
		var point 		= new google.maps.LatLng( parseFloat(lista_coord_x[j]).toFixed(8), parseFloat(lista_coord_y[j]).toFixed(8) );
		
		ancho_peq 	= img_dimension_ancho_peq[lista_id_tipo_inc[j]];
		alto_peq 	= img_dimension_alto_peq[lista_id_tipo_inc[j]];
		ancho_med 	= img_dimension_ancho_med[lista_id_tipo_inc[j]];
		alto_med 	= img_dimension_alto_med[lista_id_tipo_inc[j]];

		var icono_marker = "../../publico/imagenes/incidencias/peq/" + lista_id_tipo_inc[j] + ".gif";
		var image = new google.maps.MarkerImage( icono_marker,
			new google.maps.Size( ancho_peq, alto_peq ),
			new google.maps.Point( 0, 0 ),
			new google.maps.Point( parseInt(ancho_peq/2), parseInt(alto_peq/2) ));
		
		// Llenamos la Informacion del InfoWindow
		// Si el Tab es Incidencia
		html_tab1 	= infowindow_div_incidencia;
		html_tab1	= html_tab1.replace("%%element.id_incidencia%%",		lista_id_incidencia[j]);
		
		html_tab1 	= html_tab1.replace("%%element.nombre_tipo_inc%%",		nombre_tipo_inc[lista_id_tipo_inc[j]]);
		html_tab1 	= html_tab1.replace("%%element.fecha_ocurrencia%%",		lista_fecha_ocurrencia[j]);
		if ( lista_id_status_inc[j] == "A" ) {
			html_tab1 = html_tab1.replace("%%element.id_status%%",			"ACTIVA");
		} else {
			html_tab1 = html_tab1.replace("%%element.id_status%%",			"INACTIVA");	
		}
		if ( lista_observaciones[j] != "" ) {
			html_tab1 = html_tab1.replace("%%element.observaciones%%",		lista_observaciones[j]);
		} else {
			html_tab1 = html_tab1.replace("Observaciones:",					"");		
			html_tab1 = html_tab1.replace("%%element.observaciones%%",		"");
		}
		
		
		// Si el Tab es Imagen
		html_tab3 	= infowindow_div_imagen;
		html_tab3 	= html_tab3.replace("%%element.id_incidencia%%",		lista_id_incidencia[j]);
		html_tab3 	= html_tab3.replace("%%element.desc_image_inc%%",		"<img src='../../../alcaldia/" + id_municipio_base + "/smist/" + lista_ruta_img1[j] + "' title='" + nombre_tipo_inc[lista_id_tipo_inc[j]] + "' alt='" + nombre_tipo_inc[lista_id_tipo_inc[j]] + "' width='150px' height='150px'/>");
		
		// Configuramos el infoBubble
		infoBubble = new InfoBubble({
			maxWidth: 300,
			minWidth: 300,
			maxHeight: 200,
			minHeight: 200,
			map: map,
			shadowStyle: 1,
			padding: 5,
			backgroundColor: '#FFFFFF',
			borderRadius: 15,
			arrowSize: 20,
			borderWidth: 2,
			borderColor: color_menu,
			disableAutoPan: false,
			hideCloseButton: false,
			arrowPosition: 50,
			arrowStyle: 0
		});
		
		// Agregamos los Tabs al infoBubble
		infoBubble.addTab('Incidencia', 		html_tab1);
		infoBubble.addTab('Imagen', 			html_tab3);
		
		// Creamos el Marcador
		var marker = new google.maps.Marker({
			position: point,
			map: map,
			title: nombre_tipo_inc[lista_id_tipo_inc[j]],
			icon: image,
			infoBubblez: infoBubble
		});
		
		// Creamos el Evento
		google.maps.event.addListener(marker, "click", function () {
			if (!(this.infoBubblez).isOpen()) {
				if ( infoBubbleTurno != null ) {
					infoBubbleTurno.close();	
				}
				(this.infoBubblez).open(map, this);
				infoBubbleTurno = this.infoBubblez;
			}
		});
		
		// Agregamos el Marcador al Arreglo
		markers.push(marker);
	}
}